package com.fs.cv.dao;

import com.fs.cv.pojo.pojodao.Record;

import java.util.List;
import java.util.Map;

/**
 * @作者: zh
 * @时间: 2020/10/1 14:18
 * @描述:  授课信息相关数据访问接口
 */
public interface RecordDao {
    /**
     * 根据日期和一个可变字段（teacher_name|class_name)查询record
     * @param begin 开始日期
     * @param end  结束日期
     * @param name 字段名
     * @param value 字段值
     * @return 记录的集合
     */
    List<Record> selectByDate(String begin, String end, String name, String value);

    /**
     * 查询record
     * @param id record_id
     * @return 一条记录
     */
    Record selectById(Integer id);

    /**
     * 更新record
     * @param map 更新所需信息，除了id的对应字段
     * @return 受影响的条数
     */
    int updateRecord(Map<String,Integer> map);

    /**
     * 删除record
     * @param id record_id
     * @return 受影响条数
     */
    int deleteRecord(Integer id);

    /**
     * 插入record
     * @param map record的除了id的属性
     * @return 受影响的条数
     */
    int insertRecord(Map<String,Object> map);

    /**
     * 调整record 实际是修改record_date和record_index
     * @param map record_id,record_date,record_index;
     * @return 受影响的条数
     */
    int adjustRecord(Map<String,Object> map);
    /**
     * 获得teacher_id
     * @param name  teacher_name
     * @return teacher_id
     */
    Map<String,Integer> selectTeacherByName(String name);

    /**
     * 获得class_id
     * @param name class_name
     * @return class_id
     */
    Map<String,Integer> selectClassByName(String name);

    /**
     * 获得course_id
     * @param name course_name
     * @return course_id
     */
    Map<String,Integer> selectCourseByName(String name);

    /**
     * 获得classroom_id
     * @param name classroom_name
     * @return classroom_id
     */
    Map<String,Integer> selectClassroomByName(String name);

    /**
     * 通过用户id查询是否有对应的teacher
     * @param id 用户id
     * @return null或者teacher_name
     */
    Map<String,String> selectTeacherNameByUserId(Integer id);

    /**
     * class_name模糊查询
     * @param keyWord 关键词
     * @return 集合
     */
    List<Map<String,Object>> selectClassBlurry(String keyWord,int departmentId);
    /**
     * teacher_name模糊查询
     * @param keyWord 关键词
     * @return 集合
     */
    List<Map<String,Object>> selectTeacherBlurry(String keyWord);
    /**
     * course_name模糊查询
     * @param keyWord 关键词
     * @return 集合
     */
    List<Map<String,Object>> selectCourseBlurry(String keyWord);
    /**
     * classroom_name模糊查询
     * @param keyWord 关键词
     * @return 集合
     */
    List<Map<String,Object>> selectClassroomBlurry(String keyWord);

    /**
     * 根据班主任查班级
     * @param id 班主任的用户id
     * @return 班级
     */
    Map<String,String> selectClassByMaster(int id);

    /**
     * 根据系教务主任id查系id
     * @param userId 教务主任id
     * @return 系id
     */
    Map<String,Integer> selectDepartmentByRegistrarId(int userId);

}
